import axios from 'axios'
import router from '@/router'
import { showNotify } from 'vant'

// 创建axios实例
const service = axios.create({
	baseURL: '/oisys', // 用于配置请求接口公用部分
	withCredentials: false, // 跨域请求时是否需要访问凭证
	timeout: 10000, // 超时时间
	headers: {},
})

// 请求拦截器
service.interceptors.request.use((config) => {
	// config.url = process.env.NODE_ENV !== 'production' ? '/api' + config.url : config.url
	// 这里可以进行请求加密等操作。如添加token，cookie，修改数据传输格式等
	const token = localStorage.getItem('token')
	config.headers['token'] = token || ''
	config.headers['Content-type'] = 'application/json'
	return config
})

// 响应拦截器
service.interceptors.response.use(
	async (response) => {
		// 请求成功进行的操作
		const res = response.data
		if (!res) {
			showNotify({
				type: 'danger',
				message: '未知异常',
				duration: 1000,
			})
			return Promise.reject()
		} else if (+res.code !== 200) {
			showNotify({
				type: 'danger',
				message: res.msg,
				duration: 1000,
			})
			if (+res.code === 999 || +res.code === 401) {
				await router.replace({
					path: '/',
				})
			}
			return Promise.reject(res.msg)
		} else {
			return res
		}
	},
	(error) => {
		showNotify({
			type: 'danger',
			message: '未知异常',
			duration: 1000,
		})
		return error
	}
)

export default service
